package com.weme.common.util

import androidx.recyclerview.widget.DiffUtil
import dev.kratos.api.user_server.v1.GetAlbumReply
import io.reactivex.annotations.Nullable

class DiffUtilCallback : DiffUtil.Callback() {
    private var oldList: List<GetAlbumReply>? = null
    private var newList: List<GetAlbumReply>? = null

    // 构造方法初始化旧数据和新数据
    fun YourDiffUtilCallback(oldList: List<GetAlbumReply>?, newList: List<GetAlbumReply>?) {
        this.oldList = oldList
        this.newList = newList
    }

    // 实现回调方法，告诉 DiffUtil 判断两个对象是否相同
    override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
        return oldList!![oldItemPosition].mediaList.size === newList!![newItemPosition].mediaList.size
    }

    // 实现回调方法，告诉 DiffUtil 判断两个对象的内容是否相同
    override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
        return oldList!![oldItemPosition].equals(newList!![newItemPosition])
    }

    // 实现回调方法，告诉 DiffUtil 两个对象的 payload
    @Nullable
    override fun getChangePayload(oldItemPosition: Int, newItemPosition: Int): Any? { // 如果有特定字段发生变化，可以在这里返回对应的 payload
        return super.getChangePayload(oldItemPosition, newItemPosition)
    }

    // 返回旧数据集的大小
    override fun getOldListSize(): Int {
        return oldList!!.size
    }

    // 返回新数据集的大小
    override fun getNewListSize(): Int {
        return newList!!.size
    }
}